در برنامه زیر کنترول سرو موتور را به وسیله یک پتانسیومتر کنترول می کنیم
#include
#include
#include
#include
#asm
.equ __lcd_port=0x18
#endasm
#include
#define adc_vref_type 0xC0
unsigned int read_adc(unsigned char);
float drj;
unsigned int data;
char code[20];
void main(void)
{
PORTA=0x00;
DDRA=0x00;
DDRD=0x20;
ADMUX=adc_vref_type;
ADCSRA=0x85;
lcd_init(16);
TCCR1A=0x80;
TCCR1B=0x12;
TCNT1=0;
ICR1H=0x4E;
ICR1L=0x20;
OCR1A=1000;
while (1)
{
data=read_adc(0);
lcd_clear();
sprintf(code,"ADC=%d",data);
lcd_puts(code);
lcd_gotoxy(0,1);
if(data>=500)
{
drj=(data-500)/5.5556;
}
if(data<500)
{
drj=(500-data)/-5.5556;
}
ftoa(drj,2,code);
lcd_putsf("zavye=");
lcd_puts(code);
OCR1A=data+1000;
delay_ms(500);
};
}
unsigned int read_adc(unsigned char adc_input)
{
ADMUX|=adc_input;
ADCSRA|=0x40;
while((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
شماتیک